#ifndef SEMANTICNODEBLOCKLEAVE_H_
#define SEMANTICNODEBLOCKLEAVE_H_

#include "SemanticNode.h"
#include "LabeledNode.h"
#include <string>
#include <vector>

class SemanticNodeExpression;

class SemanticNodeBlockLeave : public SemanticNode, public LabeledNode {
private:
	SemanticNodeExpression *unitsFromExpression;
	SemanticNodeExpression *storageExpression;
	bool unitsFrom;

public:
	SemanticNodeBlockLeave(const SyntaxTreeNode *advanceNodeParent, SemanticNode *parent);

	bool hasUnitsFrom();

	void setUnitsFrom(SemanticNodeExpression *unitsNo);
	void setStorage(SemanticNodeExpression *storage);

	virtual std::string toDebugString(int tab);
};

#endif /* SEMANTICNODEBLOCKLEAVE_H_ */